package com.designpatterns.templatemethod.template;

/**
 * @author Brook
 */
public abstract class AbstractClass {
    final void templateMethod() {
        primitiveOperation1();
        primitiveOperation2();
        concreteOperation();
        hook();
        
    }

    private void hook() {
    }

    final void concreteOperation() {
        System.out.println("operation");
    }

    /**
     * name
     */
    abstract void primitiveOperation2();

    /**
     * name
     */
    abstract void primitiveOperation1();
}
